<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.0.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">
  <link rel="alternate" href="/atom.xml" title="dy2903的博客" type="application/atom+xml">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">


<script id="hexo-configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Pisces',
    version: '7.5.0',
    exturl: false,
    sidebar: {"position":"left","display":"post","offset":12,"onmobile":false},
    copycode: {"enable":false,"show_result":false,"style":null},
    back2top: {"enable":true,"sidebar":false,"scrollpercent":false},
    bookmark: {"enable":false,"color":"#222","save":"auto"},
    fancybox: false,
    mediumzoom: false,
    lazyload: false,
    pangu: false,
    algolia: {
      appID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    },
    localsearch: {"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},
    path: '',
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    translation: {
      copy_button: 'Copy',
      copy_success: 'Copied',
      copy_failure: 'Copy failed'
    },
    sidebarPadding: 40
  };
</script>

  <meta name="description" content="任何系统之间，如果需要通信，都需要一套自己的协议系统。这个协议系统一般要定义互相通信的语言，以及硬件。 OSI是被提取抽象出来的系统间通信模型，中文意思是“开放式系统互联”，是描述多个系统之间交流的通用模型。 OSI模型OSI初步在讲OSI之间，我们首先看一个例子，PC a向PC b发送数据包的过程如下：  a在内存中通过定义的语言生成数据包  将数据包通过总线传给TCP&#x2F;IP协议处理单元，告诉对">
<meta property="og:type" content="article">
<meta property="og:title" content="大话存储，学习笔记（7章），OSI">
<meta property="og:url" content="https:&#x2F;&#x2F;duyang2903.gitee.io&#x2F;2019&#x2F;11&#x2F;15&#x2F;%E5%A4%A7%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%887%E7%AB%A0%EF%BC%89%EF%BC%8COSI&#x2F;index.html">
<meta property="og:site_name" content="dy2903的博客">
<meta property="og:description" content="任何系统之间，如果需要通信，都需要一套自己的协议系统。这个协议系统一般要定义互相通信的语言，以及硬件。 OSI是被提取抽象出来的系统间通信模型，中文意思是“开放式系统互联”，是描述多个系统之间交流的通用模型。 OSI模型OSI初步在讲OSI之间，我们首先看一个例子，PC a向PC b发送数据包的过程如下：  a在内存中通过定义的语言生成数据包  将数据包通过总线传给TCP&#x2F;IP协议处理单元，告诉对">
<meta property="og:locale" content="en">
<meta property="og:image" content="http:&#x2F;&#x2F;upload-images.jianshu.io&#x2F;upload_images&#x2F;1323506-3e17ebfd8467ae39.png?imageMogr2&#x2F;auto-orient&#x2F;strip%7CimageView2&#x2F;2&#x2F;w&#x2F;1240">
<meta property="og:image" content="http:&#x2F;&#x2F;upload-images.jianshu.io&#x2F;upload_images&#x2F;1323506-2d0883323f2ad918.png?imageMogr2&#x2F;auto-orient&#x2F;strip%7CimageView2&#x2F;2&#x2F;w&#x2F;1240">
<meta property="og:updated_time" content="2019-11-13T13:27:13.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http:&#x2F;&#x2F;upload-images.jianshu.io&#x2F;upload_images&#x2F;1323506-3e17ebfd8467ae39.png?imageMogr2&#x2F;auto-orient&#x2F;strip%7CimageView2&#x2F;2&#x2F;w&#x2F;1240">

<link rel="canonical" href="https://duyang2903.gitee.io/2019/11/15/%E5%A4%A7%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%887%E7%AB%A0%EF%BC%89%EF%BC%8COSI/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome: false,
    isPost: true,
    isPage: false,
    isArchive: false
  };
</script>

  <title>大话存储，学习笔记（7章），OSI | dy2903的博客</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-meta">

    <div>
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">dy2903的博客</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
        <p class="site-subtitle">与肝胆人共事，从无字句读书</p>
  </div>

  <div class="site-nav-toggle">
    <div class="toggle" aria-label="Toggle navigation bar">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>
</div>


<nav class="site-nav">
  
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>Home</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>Archives</a>

  </li>
  </ul>

</nav>
</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content">
            

  <div class="posts-expand">
      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block " lang="en">
    <link itemprop="mainEntityOfPage" href="https://duyang2903.gitee.io/2019/11/15/%E5%A4%A7%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%887%E7%AB%A0%EF%BC%89%EF%BC%8COSI/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="dy2903">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="dy2903的博客">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          大话存储，学习笔记（7章），OSI
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2019-11-15 10:48:24" itemprop="dateCreated datePublished" datetime="2019-11-15T10:48:24+08:00">2019-11-15</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2019-11-13 21:27:13" itemprop="dateModified" datetime="2019-11-13T21:27:13+08:00">2019-11-13</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p>任何系统之间，如果需要通信，都需要一套自己的协议系统。这个协议系统一般要定义互相通信的语言，以及硬件。</p>
<p>OSI是被提取抽象出来的系统间通信模型，中文意思是“开放式系统互联”，是描述多个系统之间交流的通用模型。</p>
<h1 id="OSI模型"><a href="#OSI模型" class="headerlink" title="OSI模型"></a>OSI模型</h1><h2 id="OSI初步"><a href="#OSI初步" class="headerlink" title="OSI初步"></a>OSI初步</h2><p>在讲OSI之间，我们首先看一个例子，PC a向PC b发送数据包的过程如下：</p>
<ul>
<li><p>a在<strong>内存</strong>中通过定义的语言生成数据包</p>
</li>
<li><p>将数据包通过总线传给<strong>TCP/IP协议处理单元</strong>，告诉对方的IP地址、UDP还是TCP、端口号</p>
</li>
<li><p>TCP/IP处理模块收到包之后，封装，通过总线发送给<strong>以太网卡</strong></p>
</li>
<li><p><strong>以太网卡</strong>再进行编码，变成高低电平震荡发给<strong>交换机</strong></p>
</li>
<li><p>交换机将数据包交换到b的接口</p>
</li>
<li><p>b输送到<strong>以太网卡</strong>的解码芯片，去掉以太网头然后产生<strong>中断</strong>，将数据包送到内存</p>
</li>
<li><p>TCP/IP处理模块提取IP头和TCP头，以便区分应该输送到哪个应<strong>用程序的缓冲区内存。</strong></p>
</li>
<li><p>送到b的应用程序缓冲区内存</p>
</li>
</ul>
<p>可以发现里面最重要的就是三个<strong>元素</strong></p>
<ul>
<li><p>连：通信双方需要连通起来。</p>
</li>
<li><p>找：指的是通信双方必须能区分自己和对方。</p>
</li>
<li><p>发：定义了如何将数据发到对方。</p>
</li>
</ul>
<h2 id="OSI的七个层次"><a href="#OSI的七个层次" class="headerlink" title="OSI的七个层次"></a>OSI的七个层次</h2><p>OSI模型将系统通信划分为了7个层次，最上面的三个层次可以归属到应用层。这个层不需要关心如何将数据传送到对方，只关心如何组织和表达数据。</p>
<h3 id="应用层"><a href="#应用层" class="headerlink" title="应用层"></a>应用层</h3><p>应用层是OSI的最上层，表示一个系统对另一个系统要传达的最终消息。</p>
<p>只关注数据， 不关注指令如何发送</p>
<h3 id="表示层"><a href="#表示层" class="headerlink" title="表示层"></a>表示层</h3><blockquote>
<p>表示层就是对应用层数据的一种表示。</p>
</blockquote>
<p>发送方必须用双方规定好的格式来表示信息：可以嵌入在实体数据中。</p>
<h3 id="会话层"><a href="#会话层" class="headerlink" title="会话层"></a>会话层</h3><blockquote>
<p>会话层：建立会话交互机制。实际是双方的应用程序之间的交互。</p>
</blockquote>
<p>应用层、表示层、会话层的数据内容都被封装起来，交给<strong>押运员</strong><code>传输层</code>。</p>
<p>TCP/IP只有4层：应用层、传输层、网络层、物理链路层，它将OSI的应用层、表示层、会话层合并为一层，即<code>应用访问层</code>。意思是这个层全部与应用程序相关的逻辑，与网络通信无关。应用程序只需要调用下层的接口就可以完成通信。</p>
<p><strong>下四层的作用是把上三层的数据成功送到目的地。</strong></p>
<h3 id="传输层"><a href="#传输层" class="headerlink" title="传输层"></a>传输层</h3><p>典型的传输层程序如下：</p>
<ul>
<li><p>TCP协议的作用是保证上层数据能传输到目的地。类似货运公司的<strong>押运员</strong>，不管通过什么渠道（直达还是下一跳），不管物理链路的类型，只要送到即可。</p>
</li>
<li><p>如果出现错误，需要<strong>重新发送</strong>。每件货物到了目的地必须找收件人签字（<strong>TCP的ACK应答包</strong>）或者一批货物到了以后一次性签收。（<strong>滑动窗口</strong>）</p>
</li>
<li><p>最后回公司登记</p>
</li>
</ul>
<p><strong>TCP主要处理拥塞和流量控制。</strong>路由器是调度中心，它可以决定走哪条路。TCP不能调度，它只是在发生了拥挤就只能通知后续的货物慢点发。如果道路畅通，则通知后面的货物加速发送。</p>
<p>那么TCP是怎么知道链路是否拥塞呢？它可以通过接收方返回的<strong>ACK应答</strong>来判断链路拥挤的。如果半天都没收到对方的签字，说明拥塞，有丢失</p>
<p> ** 传输层的程序一定运行在通信双方的终端设备上。**而不是在中间的互联设备上。</p>
<p> 因为传输层是一种<strong>端到端</strong>的保障机制，必须保证成功收到了并<strong>成功处理数据</strong>，才算发送成功了。如果只到了对方的网卡，但是断电了，也不叫端到端保障。</p>
<p>具体的可以再看<a href="http://www.cnblogs.com/dy2903/p/8311088.html" target="_blank" rel="noopener">从输入网址到浏览器返回内容（二），TCP/IP篇</a></p>
<h3 id="网络层"><a href="#网络层" class="headerlink" title="网络层"></a>网络层</h3><p>上面说到了传输层其实只是一个<strong>押运员</strong>，它并不能进行调度，那么如何选路就交给了网络层。</p>
<p>同样以客户寄货物为例，当客户把货物交给货运公司的时候，会填写目的地址，至于应该走哪条路，统统不管，全部交给网络层处理。</p>
<ul>
<li><p>货运公司为每件货物贴上<strong>IP头地址标签</strong></p>
</li>
<li><p>货运公司掌握了全球范围的地址信息（<strong>路由表</strong>）</p>
</li>
<li><p>选择了一条路就上路。</p>
</li>
<li><p>货物每中转到一个地方就交给<strong>那个地方的调度</strong>，由调度来决定下一站到哪里。</p>
</li>
<li><p>旧调度不必告诉新调度最终的目的怎么走，因为所有调度都知道<strong>最终的目的。</strong></p>
</li>
</ul>
<p>总结一下就是，客户寄送货物的时候需要给出最终的目的地址，不管这个货物途径哪个<strong>中转站</strong>，所有的中转站都会知道最终的目的地址。</p>
<p>比如，要从新疆将货物寄到青岛，但是新疆到青岛没有直到的火车，所以只能去北京转出。</p>
<p>那么新疆的调度会去查找路由表，发现必须先到北京。注意此时在货物上贴上的还是<strong>青岛</strong>的标签，而不是北京的标签，但是会将货物发到去北京的火车上。</p>
<p>货物到北京，查看最终的目的地，会查找北京调度中心的路由表，此路由表与新疆的表不同。于是将货物送到去青岛的火车。</p>
<p>可以看出** 路由器就是调度的角色**</p>
<p>比如从青岛访问北京的服务器，具体步骤如下：</p>
<ul>
<li><p>首先必须知道服务器的IP地址，用这个IP地址作为最终目的地址组装成数据包，发送给青岛的Internet提供商（下面叫<strong>运营商</strong>）的路由器</p>
</li>
<li><p>运营商的路由器解析目的IP地址，发现应该从1号端口发送出，于是发到了<strong>河北</strong>的另一台路由器。</p>
</li>
<li><p>河北路由器根据目的IP查找路由表，发现需要从8口出</p>
</li>
<li><p>多次中转以后，发到了北京的路由器。</p>
</li>
<li><p>最终到了北京的服务器，将这个包传送到这台服务器的<strong>网卡</strong>，并提交到TCP/IP协议处理的内存空间。</p>
</li>
<li><p>发现是一个TCP握手数据包，所以返回一个确认包，三次握手完成后，就可以向服务器发送HTTP请求来获取网页资源。</p>
</li>
</ul>
<p>在中转的过程中，目的IP并不会改变，改变的只是MAC地址，也就是说会将MAC地址改为<strong>下一站</strong>的地址。</p>
<h3 id="数据链路层"><a href="#数据链路层" class="headerlink" title="数据链路层"></a>数据链路层</h3><blockquote>
<p><strong>数据链路层</strong>：连通两个设备之间的链路，将上层的数据包再次打包成对<strong>应链路特定的格式</strong>。按照对应链路的规则在链路上传输给对方。</p>
</blockquote>
<p>数据链路就好比<strong>交通规则</strong>：上路之前还需要看公路的质量怎么样，和对方商量传输的事宜。</p>
<p><strong>链路层的作用：</strong></p>
<ul>
<li><p>协商链路参数：双工、速率、链路质量</p>
</li>
<li><p>打包成<strong>帧</strong>，加上同步头，一次传输一句或者一个字符一个字符（取决于上层的选择）</p>
</li>
<li><p>链路层程序调用物理层提供的接口，将帧交给物理层。</p>
</li>
<li><p>提供一些保障机制，在每个帧之后加一个校验字段。如果不符说明链路干扰，直接丢弃，不过<strong>不会报告错误</strong>，因为上层对链路层的错误不关心。接收方的传输层会感知某个包没有到达，重新传送不完整的包。链路层只侦错，不纠错。</p>
</li>
</ul>
<p><strong>两台PC之间的通信和两个路由器之间通信是有区别的。</strong></p>
<p><strong>路由间的通信：</strong></p>
<p>简单的路由设备工作在OSI的第三层，即网络层，没有上4层的处理逻辑。</p>
<p>所以收到包之后，只检查包中的IP地址，<strong>不改变IP头之上的其他内容。</strong></p>
<p><strong>如果有NAT功能的路由器，会对IP包的源或者目的IP地址做修改</strong>。</p>
<p>下图为通信路径上各个设备所作用的层次示意图：<br><img src="http://upload-images.jianshu.io/upload_images/1323506-3e17ebfd8467ae39.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="image.png"></p>
<ul>
<li><p>PC A上的浏览器要访问PC B上的Web服务，首先调用WinSock接口，访问<strong>OS内核</strong>中的TCP/IP协议栈，将<strong>目的IP和目的端口以及数据（HTTP GET请求）</strong>告诉TCP/IP协议栈</p>
</li>
<li><p>协议栈发现与<code>PC B</code>不存在链接，所以通过三次握手与B的协议栈建立连接。<br>（A的协议栈组装第一次<strong>握手包</strong>，发给OS的内核缓冲区，调用网卡驱动从缓冲区将IP包编码并传递出去，因为握手包很小，所以只需要一个帧。）</p>
</li>
<li><p>帧到达路由器A的缓冲区，产生<strong>中断</strong>信号，去掉以太网头，发送到<code>路由器A</code>的内存，等待IP转发逻辑块处理（IP路由协议计算模块），分析出IP包的头部目的IP地址，查找路由表确定出去的端口号</p>
</li>
<li><p>查找出后，从<code>网卡2</code>出发送到<code>路由器B的网卡2</code>.通过同样的过程，发送到<code>PC B</code>的网卡缓冲区，网卡产生<strong>中断</strong>，通过总线传送到TCP/IP的协议栈缓冲区内存。</p>
</li>
<li><p><code>PC B</code>的协议栈分析出IP是自己的，端口号是80，同时握手标识位是二进制1，就知道是从源设备向Web服务程序所监听的端口发起的握手连接。所以回复IP包给<code>PC A</code>，PC A再回一个最终确认的包。</p>
</li>
<li><p>握手成功，<code>PC A</code>的协议栈将缓冲区中有浏览器发送过来的HTTP GET请求数据组装成TCP/IP数据包发送给<code>PC B</code>。PC B获得数据包之后，分析TCP 端口号，根据对应关系将数据放到<strong>监听这个端口的应用程序的缓冲区内存。</strong></p>
</li>
<li><p>应用程序收到GET请求后，触发Web服务逻辑流程，返回Web数据。同样由B的协议栈发送给<code>PC机 A</code>。</p>
</li>
</ul>
<blockquote>
<p>未收到确认的包会放到缓冲区中，不会删除，直到收到对方的确认。</p>
</blockquote>
<p>所以即使中途的设备把包丢弃了，运行在两端的TCP/IP协议依然会重传，这就是端到端的保障，因为设备中途网络设备不会缓存发送的数据，更不会自动重传。</p>
<p>现在我们来对比一下IP头和TCP头的区别：</p>
<ul>
<li><p>IP头是个标签，用来查看是谁发的货物。</p>
</li>
<li><p>TCP头是用来确认由哪个上层应用程序来处理收到的包。（用端口号来决定）</p>
</li>
</ul>
<h3 id="物理层"><a href="#物理层" class="headerlink" title="物理层"></a>物理层</h3><blockquote>
<p><code>物理层</code>：在一种介质上将数据编码发送给对方。</p>
</blockquote>
<p>注意<strong>链路层是控制物理层的。</strong></p>
<p>我们可以把物理层看做<strong>传送带</strong>，不会进行货物分批，所以需要<strong>链路层</strong>给每批货物加标志性的头，接收方看到标志了以后就知道新一批货物来了。</p>
<p>经过物理层编码后，最终变成了一串bit流。通过电路振荡传输给对方，收到bit流之后，提交给链路层程序，剥去链路层同步头、帧头帧尾、控制字符。</p>
<blockquote>
<p>MTU ,最大传输单元：每种链路都有自己最合适的分批大小</p>
</blockquote>
<p>如果一次传输传送大于这个大小的货物，超过了链路接收放的处理吞吐量，会造成缓冲区溢出。</p>
<p>不过TCP和IP协议都会给货物分批。TCP会首先给货物分批，到了IP层，会按照链路层的分批大小来进行分批，如果TCP的分批大小已经小于链路层的分批，不会再分。</p>
<p>被IP层分批的货物，最终会由接受方的IP层再组装，但是由TCP分批的货物，<strong>接收方的TCP层不会合并。</strong>对货物的处理分析全部交由上层的应用程序来处理</p>
<p><img src="http://upload-images.jianshu.io/upload_images/1323506-2d0883323f2ad918.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="image.png"></p>

    </div>

    
    
    

      <footer class="post-footer">

        

          <div class="post-nav">
            <div class="post-nav-next post-nav-item">
                <a href="/2019/11/15/%E5%A4%A7%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%8815%E7%AB%A0%EF%BC%89%EF%BC%8C%E5%9D%97%E7%BA%A7%E9%9B%86%E7%BE%A4%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F/" rel="next" title="大话存储，学习笔记（15章），块级集群存储系统">
                  <i class="fa fa-chevron-left"></i> 大话存储，学习笔记（15章），块级集群存储系统
                </a>
            </div>

            <span class="post-nav-divider"></span>

            <div class="post-nav-prev post-nav-item">
                <a href="/2019/11/15/%E5%A4%A7%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%8815%E7%AB%A0%EF%BC%89%EF%BC%8CNoSQL/" rel="prev" title="大话存储，学习笔记（15章），NoSQL">
                  大话存储，学习笔记（15章），NoSQL <i class="fa fa-chevron-right"></i>
                </a>
            </div>
          </div>
      </footer>
    
  </article>
  
  
  

  </div>


          </div>
          

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          Table of Contents
        </li>
        <li class="sidebar-nav-overview">
          Overview
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#OSI模型"><span class="nav-number">1.</span> <span class="nav-text">OSI模型</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#OSI初步"><span class="nav-number">1.1.</span> <span class="nav-text">OSI初步</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#OSI的七个层次"><span class="nav-number">1.2.</span> <span class="nav-text">OSI的七个层次</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#应用层"><span class="nav-number">1.2.1.</span> <span class="nav-text">应用层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#表示层"><span class="nav-number">1.2.2.</span> <span class="nav-text">表示层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#会话层"><span class="nav-number">1.2.3.</span> <span class="nav-text">会话层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#传输层"><span class="nav-number">1.2.4.</span> <span class="nav-text">传输层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#网络层"><span class="nav-number">1.2.5.</span> <span class="nav-text">网络层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#数据链路层"><span class="nav-number">1.2.6.</span> <span class="nav-text">数据链路层</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#物理层"><span class="nav-number">1.2.7.</span> <span class="nav-text">物理层</span></a></li></ol></li></ol></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">dy2903</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">20</span>
          <span class="site-state-item-name">posts</span>
        </a>
      </div>
      <div class="site-state-item site-state-tags">
        <span class="site-state-item-count">2</span>
        <span class="site-state-item-name">tags</span>
      </div>
  </nav>
</div>
  <div class="feed-link motion-element">
    <a href="/atom.xml" rel="alternate">
      <i class="fa fa-rss"></i>RSS
    </a>
  </div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2019</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">dy2903</span>
</div>
  <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> v4.0.0
  </div>
  <span class="post-meta-divider">|</span>
  <div class="theme-info">Theme – <a href="https://pisces.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Pisces</a> v7.5.0
  </div>

        












        
      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>
<script src="/js/utils.js"></script><script src="/js/motion.js"></script>
<script src="/js/schemes/pisces.js"></script>
<script src="/js/next-boot.js"></script>



  
















  

  

</body>
</html>
